/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package model.perfil;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceException;
import model.excecoes.ErroDAOException;
import model.excecoes.ErroNegocioException;
import model.interfaces.INegocioPerfil;
import model.factory.Factory;
/**
 *
 * @author Marcos
 */
public class NegocioPerfil implements INegocioPerfil{

    private RepositorioPerfil repPerfil = null;
    
    public NegocioPerfil(){
        repPerfil = Factory.getPerfilDAO();
    }
    
    @Override
    public void cadastrarPerfil(Perfil perfil) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException {
        repPerfil.cadastrar(perfil);
    }

    @Override
    public void alterarPerfil(Perfil perfil) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException {
        repPerfil.alterar(perfil);
    }

    @Override
    public void excluirPerfil(Perfil perfil) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException {
        repPerfil.excluir(perfil);
    }

    @Override
    public List<Perfil> listarPerfil(String consulta, String campo) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException {
        List<Perfil> perfis = repPerfil.listarPerfil(consulta, campo);
        if(!consulta.equals("Todos") && !campo.equals("Todos")){
            if(perfis.isEmpty()){
                throw new ErroNegocioException("Perfil não encontrado ou não cadastrado.\nPor favor informe os dados corretos ou cancele a operação.");
            }
        }
        return perfis;
    }

    @Override
    public int identificarCodigoCliente(String cpf, String nome) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException {
        return repPerfil.identificarCodigoCliente(nome, cpf);
    }
    
}
